home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et3_0-a1.lha / et3 / src / PROGENV / EtPeTool.C < prev    next >
C/C++ Source or Header  |  1992-06-12  |  2KB  |  119 lines

  1. #ifdef __GNUG__
  2. #pragma implementation
  3. #endif
  4.  
  5. #include "EtPeTool.h" 
  6. #include "EtPeCmdNo.h" 
  7. #include "Class.h" 
  8. #include "String.h" 
  9. #include "OrdColl.h" 
  10. #include "MenuBar.h" 
  11. #include "Window.h" 
  12. #include "CommandProcessor.h" 
  13. #include "Menu.h" 
  14.  
  15. extern int gCallCount(int);
  16.  
  17. //---- EtPeTool ----------------------------------------------------------------
  18.  
  19. NewMetaImpl0(EtPeTool, Manager);
  20.  
  21. int EtPeTool::count;
  22.  
  23. EtPeTool::EtPeTool(Manager *mp, char *n) : Manager(mp)
  24. {
  25.     mp->AddManager(this);
  26.     
  27.     if (count == 0)
  28.     SetName(form("*** %s ***", n));
  29.     else
  30.     SetName(form("%s %d", n, count));
  31.     count++;
  32.     keySelectItems= 0;
  33. }
  34.  
  35. EtPeTool::~EtPeTool()
  36. {
  37.     SafeDelete(keySelectItems);
  38. }
  39.  
  40. void EtPeTool::AddKeySelectItem(VObject *vop)
  41. {
  42.     if (keySelectItems == 0)
  43.     keySelectItems= new OrdCollection;
  44.     keySelectItems->Add(vop);
  45. }
  46.  
  47. void EtPeTool::InputKbd(Token &t)
  48. {
  49.     if (keySelectItems) {
  50.     Iter next(keySelectItems);
  51.     VObject *vop;
  52.     while (vop= (VObject*)next()) {
  53.         if (WantGrabKeyToken(t, vop)) {
  54.         vop->Input(t.Pos, t, GetWindow());
  55.         return;
  56.         }
  57.     }                
  58.     }
  59.     Manager::InputKbd(t);
  60. }
  61.  
  62. bool EtPeTool::WantGrabKeyToken(Token &t, VObject *vop)
  63. {
  64.     bool selectKey= t.IsAscii() && (t.Code != '\r') && (t.Code != '\n');
  65.     return selectKey && vop->ContainsPoint(t.Pos);
  66. }
  67.  
  68. MenuBar *EtPeTool::DoMakeMenuBar()
  69. {
  70.     MenuBar *mb= new MenuBar;
  71.  
  72.     //---- help menu
  73.     Menu *m= new Menu("Help", FALSE);
  74.     m->AppendItem("About", cABOUT);
  75.     mb->AddMenu(m);
  76.     
  77.     //---- tool menu
  78.     m= new Menu("Tool", FALSE);
  79.     m->AppendItems(
  80.             "Close",    cCLOSE,
  81.             "Spawn",    cSPAWN,
  82.             "Print",    cPRINT,
  83.             "-",
  84.             "Exit ET++PE", cEXIT,
  85.             0);
  86.     mb->AddMenu(m);
  87.     
  88.     //---- edit menu
  89.     m= new Menu("Edit");
  90.     GetCmdP()->DoCreateMenu(m);
  91.     m->AppendItems("-",
  92.               "Cut",        cCUT,
  93.               "Copy",       cCOPY,
  94.               "Paste",      cPASTE,
  95.               "Clear",      cCLEAR,
  96.               "-",
  97.               "Select All", cSELECTALL,
  98.               0);
  99.     mb->AddMenu(m);
  100.     
  101.     return mb;
  102. }
  103.  
  104. Command *EtPeTool::DoMenuCommand(int cmd)
  105. {
  106.     if (cmd == cEXIT) 
  107.     gCallCount(-1);
  108.     else
  109.     return Manager::DoMenuCommand(cmd);
  110.     return gNoChanges;
  111. }
  112.  
  113. void EtPeTool::DoSetupMenu(Menu *menu)
  114. {
  115.     menu->EnableItems(cCLOSE, cSPAWN, 0);
  116.     menu->EnableItem(cEXIT, gCallCount(0) > 0);
  117. }
  118.  
  119.